home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 145 / Gekkan Dennou Club - 2000.6 Vol. 145 (Japan).7z / Gekkan Dennou Club - 2000.6 Vol. 145 (Japan) (Track 1).bin / ikap / etc / f56 / f56make.c next >
C/C++ Source or Header  |  2000-05-08  |  2KB  |  81 lines

  1. /*
  2. 画面表示情報から「5x6ドット非漢字全角コードマップフォントファイル」を生成
  3.  
  4. 6万色:白(0xffff)地に黒(0x0000)であること
  5.  
  6. */
  7.  
  8. #include    <stdio.h>
  9.  
  10.  
  11. /*
  12. 指定座標から5x6ドットビットマップ情報(4バイト)をpatにかきだし
  13. */
  14. int    getFont5x6(fx,fy,pataddr)
  15. int    fx,fy;
  16. unsigned char    *pataddr;
  17. {
  18.     int    x,y,pat;
  19.     unsigned char *buf;
  20.  
  21.     buf=pat;
  22.     pat=0;
  23.     for( y=0; y<6; y++ ){ ; for( x=0; x<5; x++ ){
  24.         pat<<=1;
  25.         if( point(fx+x,fy+y)==0 ){
  26.             pat|=1;
  27.         }
  28.     }}
  29.  
  30. //    pataddr[0]=(pat&0b00 1111111111 1111111111 1111111111)
  31.  
  32.     pataddr[0]=(pat&0b00111111110000000000000000000000)>>22;
  33.     pataddr[1]=(pat&0b00000000001111111100000000000000)>>14;
  34.     pataddr[2]=(pat&0b00000000000000000011111111000000)>> 6;
  35.     pataddr[3]=(pat&0b00000000000000000000000000111111)<< 2;
  36.  
  37. }
  38.  
  39.  
  40. /*                   [area][code][size]  */
  41. unsigned char fontBuf[8][94+2][4];
  42.  
  43. int    main(argc,argv)
  44. int    argc;
  45. char    *argv[];
  46. {
  47.     short    area,fx,fy,fcode;
  48.  
  49.  
  50.     for( area=0; area<8; area++ ){
  51.         for( fy=0; fy<6; fy++ ){
  52.             for( fx=0; fx<=0x0f; fx++ ){
  53.                 fcode=fy*0x10+fx;
  54.                 getFont5x6(fx*8,fy*8+area*48,fontBuf[area][fcode]);
  55.             }
  56.         }
  57.     }
  58.  
  59.     {
  60.         FILE    *fp;
  61.         fp=fopen(argv[1],"wb");
  62.         if( fp==NULL ){
  63.             printf(
  64.             "画面表示から5x6ドットフォントデータ(バイナリ)を作ります\n"
  65.             "usage:@>f56make filename.f56\n"
  66.             "※実行前に、6万色画面にフォントデータを表示しておくこと\n"
  67.             );
  68.             goto quick_exit;
  69.         }
  70.         for( area=0; area<8; area++ ){
  71.             fwrite(&fontBuf[area][1],sizeof(unsigned char),94*4,fp);
  72.         }
  73.         fclose(fp);
  74.     }
  75.  
  76. quick_exit:
  77.     return(0);
  78. }
  79.  
  80.  
  81.